; long long int suma(long long int a, long long int b);

global suma

section .text

suma:
	push ebp
	mov ebp, esp
	push esi
	push edi
	push ebx
	
	mov eax, [ebp + 8] ; Muevo a eax la parte baja de a.
	mov edx, [ebp + 12] ; Muevo a edx la parte alta de a.
	mov ebx, [ebp + 16] ; Muevo a ebx la parte baja de b.
	mov ecx, [ebp + 20] ; Muevo a ecx la parte alta de b.
	add eax, ebx ; Sumo las partes bajas de a y de b. Y pongo el resultado en eax.
	adc edx, ecx ; Sumo las partes altas de a y de b, y tambien sumo el carry por si hubo en la suma de las parte bajas. Y pongo el resultado en edx.
	; Se devuelve el resultado en edx:eax.
fin:
	pop ebx
	pop edi
	pop esi
	pop ebp
	ret